"""
MongoDB 集合中自动生成的字段模型
"""

from bson import ObjectId
from pydantic.v1 import BaseModel


class MongoBaseField(BaseModel):
    """ 自动生成的字段 """

    is_deleted: int = 0
    """
    是否删除

    0: 未删除
    1: 已删除
    """

    create_time: str
    """
    创建时间

    格式：YYYY-MM-DD HH:mm:ss
    """

    update_time: str
    """
    更新时间

    格式：YYYY-MM-DD HH:mm:ss
    """


class PydanticObjectId(ObjectId):
    """ 兼容 Pydantic 的 ObjectId 类型 """

    @classmethod
    def __get_validators__(cls):
        yield cls.validate

    @classmethod
    def validate(cls, v) -> str:
        if not ObjectId.is_valid(v):
            raise ValueError("Invalid ObjectId")

        return str(v)
